package com.sgj.vo;

import lombok.Data;

/**
 * 解密完成
 * 微信支付回调参数(native  v3)
 * @Author: Guoji Shen
 * @Date: 2021/11/27 9:04
 */
@Data
public class WXCallbackDecryptVo {

    /**
     * 商户的商户号，由微信支付生成并下发。
     */
    private String mchid;

    /**
     * 直连商户申请的公众号或移动应用appid。
     */
    private String appid;

    /**
     * 商户系统内部订单号
     */
    private String out_trade_no;

    /**
     * 微信支付订单号
     */
    private String transaction_id;

    /**
     * 交易类型，枚举值：
     * JSAPI：公众号支付
     * NATIVE：扫码支付
     * APP：APP支付
     * MICROPAY：付款码支付
     * MWEB：H5支付
     * FACEPAY：刷脸支付
     */
    private String trade_type;

    /**
     * 交易状态，枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（付款码支付）
     * USERPAYING：用户支付中（付款码支付）
     * PAYERROR：支付失败(其他原因，如银行返回失败)
     */
    private String trade_state;

    /**
     * 交易状态描述
     */
    private String trade_state_desc;

    /**
     * 付款银行
     */
    private String bank_type;

    /**
     * 附加数据
     */
    private String attach;

    /**
     * 支付完成时间
     */
    private String success_time;

    /**
     * 支付者
     */
    private Payer payer;

    /**
     * 订单金额
     */
    private Amount amount;

    @Data
    public static class Payer {

        /**
         * 用户标识
         */
        private String openid;
    }

    @Data
    public static class Amount {

        /**
         * 总金额(单位为分)
         */
        private Integer total;

        /**
         * 用户支付金额(单位为分)
         */
        private Integer payer_total;

        /**
         * 货币类型
         * CNY：人民币，境内商户号仅支持人民币。
         */
        private String currency;

        /**
         * 用户支付币种
         */
        private String payer_currency;
    }
}